// LIFO
// 数组怎么存
    // ADT
    //     count 栈顶指针
    //     items 数据  数组  对象 | Map
    //     size items.length  items.size
    //     push  push      set
    //     pop   pop     delete
    //     clear  []    new Map
    //     toString  join('')
    //     isEmpty
    //     peek 取栈底元素
    //     find

    //     数组是有序的，有代价的 数据集比较小的时候好处理
    //     ，但是数据过大的话，内存不好分配
    //     空间代价
    //     性能上，查找费力 o(n) Map O(1)
    // Array Map

export default class Stack{
    private items:any[];
    constructor(){
        this.items=[]
    }
    push(item:any){
        this.items.push(item)
    }
    pop(){
        return this.items.pop()
    }
    peek(){
        return this.items[this.items.length-1]
    }
    isEmpty(){
        return this.items.length==0
    }
    size():number{
        return this.items.length
    }
    find(item:any){
        for(let i=0;i<this.items.length;i++){
            if(this.items[i]==item){
                return i
            }
        }
        return -1
    }
    toString(){
        return this.items.join('')
    }
}